﻿#pragma once


#ifndef ARD_SIMULATOR_H
#define ARD_SIMULATOR_H

class CPU;
enum class CPUArch;

class Simulator
{
private:
    static Simulator* singleton;
    Simulator() = default;
    // 不希望线程池对象进行拷贝构造和赋值
    Simulator(const Simulator& s) = default;
    Simulator& operator=(const Simulator& s) = default;
    ~Simulator();
public:
    static Simulator* getInstance();
    //模拟器初始化
    CPU* init();
    //主循环是否退出
    int mainLoopShouldExit();

private:
    CPU* _cpu = nullptr;
    CPUArch _arch;
};


#endif // !ARD_SIMULATOR_H


